// pages/resetPassword/resetPassword.js
const app = getApp();
import CommonService from '../../utils/service/commonService.js';
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
const util = require('../../utils/util');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //提交按钮禁用
    disabled:false,
    //手机号
    phone:'',
    //输入的验证码
    code:'',
    //正确的验证码
    rightCode:null,
    //发送验证码按钮文字
    sendBtnMsg:'发送验证码',
    //发送验证码按钮是否禁用
    disabledMsg: false,
    //查询验证码的参数
    bizId:'',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  //获取输入的手机号
  getPhoneVal(e){
    this.setData({
			phone: e.detail.value
		})
  },

  //点击发送验证码
  onSendCode(){
    let phone=this.data.phone.trim();

    //非空验证
    if(!this.formNotEmpty(phone,'phoneMessage','请输入手机号')){
      return;
    }

    //手机号格式
    if(!util.checkPhoneFormat(phone)){
      this.setData({
        phoneMessage: '手机号格式错误'
      })
      return;
    }

    this.checkIsUser(phone).then(value => {
      if(value){
        Toast.loading({
          duration: 0,
          forbidClick: true,
          message: '发送中'
        });
        let parameter={
          personalPhone: phone,
          appId:[app.globalData.myAppId]
        }
        CommonService.sendSms(parameter).then(res=>{
          if(res.data.data){
            //查询验证码
            this.querySms(phone,res.data.data.bizId);
          }else{
            Toast.fail('抱歉出错了');
          }
        }).catch((error) => {
          Toast.fail('抱歉出错了');
        })

      }else{
        this.setData({
          phoneMessage: '您的账号不存在'
        })
      }
    });
  },

  //查询验证码
  querySms(phone,bizId){
    let parameter={
      personalPhone: phone,
      bizId:bizId
    }

    this.setData({
			bizId: bizId.replaceAll('^','=')
		})

    CommonService.querySms(parameter).then(res=>{
      Toast.clear();
      if(res.data.data){
        Toast.success('验证码已发送');

        console.log('验证码');
        console.log(res.data.data.code);

        this.setData({
          checkCode: res.data.data.code
        })

        //重新发送倒计时
        let time = null;
        let num = 60;

        time = setInterval(() => {
          num--;
          this.setData({
            disabledMsg:true,
            sendBtnMsg: num + '秒后重新发送'
          });
          if (num == 0) {
            clearInterval(time);
            this.setData({
              disabledMsg: false,
              sendBtnMsg: '发送验证码'
            });
          }
        }, 1000);
      }else{
        Toast.fail('抱歉出错了');
      }

    }).catch((error) => {
      Toast.fail('抱歉出错了');
    })
  },

  //验证是不是平台用户
  checkIsUser(phone){
    let parameter={
      userName:phone
    }
    return new Promise((resolve, reject) => {
      CommonService.getUserName(parameter).then(res=>{
        if (res.data.success==true){
          resolve(true);
        } else {
          resolve(false);
        }
      }).catch((error) => {
        resolve(false);
      })
    });
  },

  //提交表单
  confirmForm(e){
    let obj=e.detail.value;
    let phone=obj.phone.trim();
    let code=obj.code.trim();

    //非空验证
    if(!this.formNotEmpty(phone,'phoneMessage','请输入手机号')){
      return;
    }

    //手机号格式
    if(!util.checkPhoneFormat(phone)){
      this.setData({
        phoneMessage: '手机号格式错误',
        disabled:true
      })
      return;
    }

    this.checkIsUser(phone).then(value => {
      if(value){
        if (code) {
          if (code == this.data.checkCode){
            //重置密码
            this.resetPass(phone);
          }else{
            this.setData({
              codeMessage: '请输入正错的验证码',
              disabled:true
            })
          }
        }else{
          this.setData({
            codeMessage: '请输入验证码',
            disabled:true
          })
        }
      }else{
        this.setData({
          phoneMessage: '您的账号不存在',
          disabled:true
        })
      }
    });
  },

  //非空验证（field要先去掉空格）
  formNotEmpty(field,messageField,messageCon){
    if(!field){
      let obj = {};
      obj[messageField] = messageCon;
      obj['disabled'] = true;
      this.setData(obj);
      return false;
    }else{
      return true;
    }
  },

  //用户输入时清除错误提示
  clearMessage(e) {
    let field = e.target.dataset.message;
    let obj = {};
    obj[field] = "";
    obj['disabled'] = false;
    this.setData(obj);
  },

  //重置密码
  resetPass(phone){
    let parameter={
      className: "com.jbn.model.auth.user.User",
      condition: [{
        fieldName: "personalPhone",
        relation: "=",
        value: phone
      }],
      updateSet: [{
        key: "password",
        value: '123456'
      }],
      hasFieldValue: false,
      operate: "set"
    }

    CommonService.update(parameter).then(res=>{
      if (res.statusCode == 200 && res.data.success == true){
        Toast('密码已重置为123456，请重新登录');

        let parameter = {
          userName:phone,
          password:''
        };
        //将用户名密码存入本地
        try {
          wx.setStorageSync("loginInputLast", parameter);
        } catch (e) {}
        setTimeout(() => {
          //跳转登录
          wx.redirectTo({
            url: "/pages/login/login?from=quit"
          })
        }, 1500);

      }else{
        Toast.fail('操作失败');
      }
    }).catch((error) => {
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})
